ExtJS তে Layout এবং Container Management অত্যন্ত গুরুত্বপূর্ণ বিষয়, যা অ্যাপ্লিকেশনের ইউজার ইন্টারফেস (UI) কাঠামো এবং কম্পোনেন্টগুলোর যথাযথ প্রদর্শন নিশ্চিত করে। Layout সিস্টেম এবং Containers ব্যবহারের মাধ্যমে আপনি বিভিন্ন UI কম্পোনেন্টকে সহজভাবে বিন্যাস এবং পরিচালনা করতে পারেন।
hbox
, vbox
, border
, fit
, ইত্যাদি।ExtJS তে বেশ কিছু ধরনের containers রয়েছে যা বিভিন্ন প্রকারের লেআউট পরিচালনা করতে সাহায্য করে:
Ext.container.Container
:Ext.panel.Panel
:Panel
একটি কন্টেইনার, যা উইন্ডো বা ডায়ালগ হিসাবে ব্যবহৃত হতে পারে।title
, collapsible
, floating
ইত্যাদি ফিচার থাকে।hbox
Layout (Horizontal Box Layout)hbox
layout হলো একধরনের horizontal লেআউট যেখানে কম্পোনেন্টগুলো একের পর এক অনুভূমিকভাবে সাজানো হয়।
Ext.create('Ext.container.Container', {
layout: 'hbox',
items: [
{
xtype: 'panel',
title: 'Panel 1',
width: 100
},
{
xtype: 'panel',
title: 'Panel 2',
width: 200
},
{
xtype: 'panel',
title: 'Panel 3',
width: 150
}
],
renderTo: Ext.getBody()
});
hbox
: এটি কম্পোনেন্টগুলোকে অনুভূমিকভাবে (horizontal) সাজানোর জন্য ব্যবহৃত হয়।width
: প্রতিটি প্যানেলের প্রস্থ নির্ধারণ করা হয়েছে।vbox
Layout (Vertical Box Layout)vbox
layout হলো একধরনের vertical লেআউট, যেখানে কম্পোনেন্টগুলো একের পর এক উল্লম্বভাবে সাজানো হয়।
Ext.create('Ext.container.Container', {
layout: 'vbox',
items: [
{
xtype: 'panel',
title: 'Panel 1',
height: 100
},
{
xtype: 'panel',
title: 'Panel 2',
height: 150
},
{
xtype: 'panel',
title: 'Panel 3',
height: 120
}
],
renderTo: Ext.getBody()
});
vbox
: এটি কম্পোনেন্টগুলোকে উল্লম্বভাবে (vertical) সাজানোর জন্য ব্যবহৃত হয়।height
: প্রতিটি প্যানেলের উচ্চতা নির্ধারণ করা হয়েছে।border
Layoutborder
layout হলো একটি জনপ্রিয় লেআউট যেখানে একটি কন্টেইনারের চারপাশে উত্তর (north), দক্ষিণ (south), পূর্ব (east), পশ্চিম (west) এবং কেন্দ্র (center) অঞ্চল থাকে। এটি সাধারণত ওয়েব অ্যাপ্লিকেশন বা ড্যাশবোর্ডে ব্যবহৃত হয়।
Ext.create('Ext.container.Viewport', {
layout: 'border',
items: [
{
xtype: 'panel',
title: 'North Panel',
region: 'north',
height: 100
},
{
xtype: 'panel',
title: 'South Panel',
region: 'south',
height: 100
},
{
xtype: 'panel',
title: 'West Panel',
region: 'west',
width: 150
},
{
xtype: 'panel',
title: 'Center Panel',
region: 'center',
html: 'Center Content Here'
}
]
});
region
: প্রতিটি প্যানেলের অবস্থান (উত্তর, দক্ষিণ, পশ্চিম, পূর্ব, কেন্দ্র) নির্ধারণ করা হয়েছে।height
/ width
: প্যানেলের আকার নির্ধারণ করা হয়েছে।fit
Layoutfit
layout কন্টেইনারের একমাত্র কম্পোনেন্টকে পুরো কন্টেইনারের মধ্যে ফিট করার জন্য ব্যবহৃত হয়।
Ext.create('Ext.container.Container', {
layout: 'fit',
items: [{
xtype: 'panel',
title: 'Fit Panel',
html: 'This panel fits the container!',
bodyPadding: 10
}],
renderTo: Ext.getBody()
});
fit
: কন্টেইনারের একমাত্র কম্পোনেন্টকে পুরো কন্টেইনারে ফিট করে দেয়।কম্পোনেন্টের layout
প্রপার্টি ব্যবহার করে আপনি কন্টেইনারের লেআউট নির্ধারণ করতে পারেন। items
প্রপার্টি ব্যবহার করে কন্টেইনারের মধ্যে কম্পোনেন্ট যোগ করা হয়।
Ext.create('Ext.panel.Panel', {
title: 'Border Layout Panel',
layout: 'border',
width: 500,
height: 300,
items: [
{
xtype: 'panel',
title: 'North',
region: 'north',
height: 50,
html: 'North Region Content'
},
{
xtype: 'panel',
title: 'Center',
region: 'center',
html: 'Center Region Content'
}
],
renderTo: Ext.getBody()
});
xtype
: প্যানেল বা অন্যান্য কম্পোনেন্ট।region
: যে অঞ্চলে প্যানেলটি থাকবে (উত্তর, দক্ষিণ, পশ্চিম, পূর্ব, কেন্দ্র)।layout
: কন্টেইনারের লেআউট (এখানে border
ব্যবহৃত হয়েছে)।Containers বিভিন্ন কম্পোনেন্ট ধারণ করে এবং তাদের অবস্থান ও লেআউট কনফিগার করে। ExtJS তে container
কম্পোনেন্টের মধ্যে অন্যান্য কম্পোনেন্ট যেমন প্যানেল, বাটন, ফর্ম, টেবিল ইত্যাদি রাখা যায়। কন্টেইনারের লেআউট এবং পজিশনিংকে খুব সহজভাবে পরিচালনা করা যায়।
Ext.create('Ext.container.Container', {
layout: 'hbox',
items: [
{
xtype: 'panel',
title: 'Panel 1',
width: 100
},
{
xtype: 'panel',
title: 'Panel 2',
width: 200
},
{
xtype: 'panel',
title: 'Panel 3',
width: 150
}
],
renderTo: Ext.getBody()
});
layout: 'hbox'
: কম্পোনেন্টগুলো অনুভূমিকভাবে সাজানো হবে।items
: কন্টেইনারের মধ্যে যেসব কম্পোনেন্ট থাকবে।border
, fit
, hbox
, vbox
)।ExtJS তে Layouts এবং Containers ব্যবহারের মাধ্যমে কম্পোনেন্টগুলোকে সুন্দরভাবে সাজানো যায়, যা অ্যাপ্লিকেশন ডিজাইন এবং রেসপন্সিভ UI তৈরির জন্য গুরুত্বপূর্ণ।
ExtJS এর Panel, Container, এবং Box Layout ব্যবস্থাপনা ইউজার ইন্টারফেসের লেআউট এবং উপাদানগুলোর বিন্যাস নিয়ন্ত্রণ করতে সহায়ক। এগুলি সাধারণত UI উপাদানগুলোকে একটি কনটেইনারের মধ্যে আছড়ে ফেলতে ব্যবহৃত হয়, যেখানে কম্পোনেন্টগুলো যথাযথভাবে সাজানো ও সজ্জিত করা হয়।
এগুলো ব্যবহার করে আপনি খুব সহজে ফ্লেক্সিবল, রেসপন্সিভ এবং কাস্টমাইজড লেআউট তৈরি করতে পারেন।
Panel কম্পোনেন্ট একটি কনটেইনার যা অন্য কম্পোনেন্ট এবং UI উপাদান ধারণ করতে পারে। এটি সাধারণত একটি বর্ডার, শিরোনাম এবং বডি ধারণ করে এবং html
, items
ইত্যাদি কনফিগারেশন দিয়ে অন্যান্য উপাদান যুক্ত করা হয়।
Ext.create('Ext.panel.Panel', {
title: 'My Panel', // প্যানেলের শিরোনাম
width: 300, // প্যানেলের প্রস্থ
height: 200, // প্যানেলের উচ্চতা
html: '<p>Welcome to ExtJS!</p>', // প্যানেলের ভিতরের HTML কনটেন্ট
renderTo: Ext.getBody() // DOM এর body তে রেন্ডার হবে
});
এখানে:
title
: প্যানেলের শিরোনাম নির্ধারণ করে।width
/ height
: প্যানেলের আকার নির্ধারণ করে।html
: প্যানেলের ভিতরের HTML কনটেন্ট।renderTo
: প্যানেলটি কোন DOM এলিমেন্টে রেন্ডার হবে তা নির্ধারণ করে।Panel সাধারণত ব্যবহারকারীর তথ্য প্রদর্শন করতে, তথ্য ফর্ম বা ডেটা ভিউ সংক্রান্ত কাজের জন্য ব্যবহৃত হয়।
Container একটি মৌলিক কম্পোনেন্ট, যা অন্যান্য কম্পোনেন্টের জন্য কন্টেইনার হিসেবে কাজ করে। এটি layout
কনফিগারেশনের মাধ্যমে অন্তর্ভুক্ত কম্পোনেন্টগুলোর পজিশন এবং বিন্যাস নিয়ন্ত্রণ করে। Container
কম্পোনেন্টটি সাধারণত Panel
, Window
এবং অন্যান্য উইন্ডো টাইপ কম্পোনেন্টের ভিত্তি।
Ext.create('Ext.container.Container', {
renderTo: Ext.getBody(),
layout: 'hbox', // হরিজেন্টাল বক্স লেআউট
items: [{
xtype: 'panel',
title: 'Panel 1',
width: 150,
height: 100
}, {
xtype: 'panel',
title: 'Panel 2',
width: 150,
height: 100
}]
});
এখানে:
layout
: কন্টেইনারের ভেতরে কম্পোনেন্টগুলোর বিন্যাস নিয়ন্ত্রণ করে। এখানে hbox
লেআউট ব্যবহৃত হয়েছে, যা উপাদানগুলোকে একে অপরের পাশে রেখেছে।items
: কন্টেইনারে রাখা কম্পোনেন্টগুলো (যেমন Panel
)।Box Layout একটি লেআউট ম্যানেজার, যা এক বা একাধিক কম্পোনেন্টকে একটি এক্সিসে (অথবা অনুভূমিক বা উল্লম্বভাবে) সাজায়। এটি দুটি প্রধান টাইপে আসে:
hbox (Horizontal Box Layout) উদাহরণ:
Ext.create('Ext.container.Container', {
renderTo: Ext.getBody(),
layout: 'hbox', // অনুভূমিক বক্স লেআউট
items: [{
xtype: 'panel',
title: 'Panel 1',
width: 150,
height: 100
}, {
xtype: 'panel',
title: 'Panel 2',
width: 150,
height: 100
}]
});
এখানে, hbox
লেআউটের মাধ্যমে দুটি প্যানেল অনুভূমিকভাবে একে অপরের পাশে সাজানো হয়েছে।
vbox (Vertical Box Layout) উদাহরণ:
Ext.create('Ext.container.Container', {
renderTo: Ext.getBody(),
layout: 'vbox', // উল্লম্ব বক্স লেআউট
items: [{
xtype: 'panel',
title: 'Panel 1',
width: 150,
height: 100
}, {
xtype: 'panel',
title: 'Panel 2',
width: 150,
height: 100
}]
});
এখানে, vbox
লেআউটের মাধ্যমে দুটি প্যানেল উল্লম্বভাবে একে অপরের উপরে সাজানো হয়েছে।
Box Layout ব্যবহারে কিছু গুরুত্বপূর্ণ কনফিগারেশন যেমন pack
, align
ইত্যাদি ব্যবহার করা হয়।
pack
: উপাদানগুলির স্থান নির্ধারণ করে (উদাহরণস্বরূপ, start
, center
, end
ইত্যাদি)।align
: উপাদানগুলির ভারটিক্যাল অ্যালাইনমেন্ট নির্ধারণ করে (উদাহরণস্বরূপ, stretch
, center
, start
ইত্যাদি)।Ext.create('Ext.container.Container', {
renderTo: Ext.getBody(),
layout: {
type: 'hbox',
pack: 'center', // উপাদানগুলোকে কেন্দ্রীভূত করবে
align: 'middle' // উপাদানগুলোকে উল্লম্বভাবে মাঝখানে রাখবে
},
items: [{
xtype: 'panel',
title: 'Panel 1',
width: 150,
height: 100
}, {
xtype: 'panel',
title: 'Panel 2',
width: 150,
height: 100
}]
});
এখানে:
pack: 'center'
: উপাদানগুলোকে কেন্দ্রে রেখেছে।align: 'middle'
: উপাদানগুলোকে উল্লম্বভাবে মাঝখানে রেখেছে।layout
এর মাধ্যমে উপাদানগুলোর বিন্যাস নিয়ন্ত্রণ করে।Panel, Container, এবং Box Layout ব্যবহারের মাধ্যমে আপনি খুব সহজে এবং কার্যকরভাবে UI উপাদানগুলি সাজাতে এবং কাস্টমাইজ করতে পারবেন। ExtJS এর এই বৈশিষ্ট্যগুলি ডেভেলপারদের শক্তিশালী এবং রেসপন্সিভ ইউজার ইন্টারফেস তৈরিতে সাহায্য করে।
ExtJS একটি শক্তিশালী UI ফ্রেমওয়ার্ক, যা কমপ্লেক্স এবং রেসপন্সিভ ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য বিভিন্ন ধরনের Containers এবং Layouts সরবরাহ করে। Nested Containers এবং Dynamic Layouts ব্যবহার করে, আপনি আরও জটিল UI স্ট্রাকচার তৈরি করতে পারবেন এবং অ্যাপ্লিকেশনের পারফরম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারবেন।
Containers হল ExtJS-এর উপাদান যা অন্য কম্পোনেন্ট বা উপাদানগুলো ধারণ করে। Nested Containers বলতে বোঝায় একটি কন্টেইনারের মধ্যে অন্য কন্টেইনার ব্যবহার করা। এটি বিভিন্ন স্তরে UI উপাদানগুলোকে গ্রুপিং এবং পজিশনিং করতে সহায়ক।
ধরা যাক, আমাদের একটি Panel
আছে যার মধ্যে একটি Toolbar
, একটি Form
, এবং একটি Grid
রয়েছে। এখানে, আমরা এই কন্টেইনারগুলোর মধ্যে Nested Containers ব্যবহার করব।
Ext.create('Ext.panel.Panel', {
title: 'Main Panel',
width: 600,
height: 400,
renderTo: Ext.getBody(),
layout: 'vbox', // Vertical layout for the parent container
items: [
{
xtype: 'toolbar',
width: '100%',
items: [
{ text: 'Button 1' },
{ text: 'Button 2' }
]
},
{
xtype: 'panel',
title: 'Nested Panel',
layout: 'hbox', // Horizontal layout for the nested container
items: [
{
xtype: 'textfield',
fieldLabel: 'Name',
flex: 1
},
{
xtype: 'textfield',
fieldLabel: 'Email',
flex: 1
}
]
},
{
xtype: 'grid',
title: 'User Data',
store: {
fields: ['id', 'name', 'email'],
data: [
{ id: 1, name: 'John Doe', email: 'john.doe@example.com' },
{ id: 2, name: 'Jane Smith', email: 'jane.smith@example.com' }
]
},
columns: [
{ text: 'ID', dataIndex: 'id' },
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email' }
]
}
]
});
এখানে:
Main Panel
একটি vertical (vbox) লেআউট ব্যবহার করছে, যার মধ্যে একাধিক কম্পোনেন্ট রয়েছে।TextField
রাখা হয়েছে।এটি একটি সাধারণ nested container উদাহরণ, যেখানে এক কন্টেইনারের ভিতরে আরেকটি কন্টেইনার রয়েছে এবং তারা নিজেদের মধ্যে ইন্টারঅ্যাক্ট করে।
Dynamic Layouts এর মাধ্যমে আপনি কন্টেইনারের লেআউটকে রানটাইমে পরিবর্তন করতে পারেন। এটি বিভিন্ন পরিস্থিতির উপর ভিত্তি করে কন্টেইনারের লেআউট পরিবর্তন করার জন্য ব্যবহৃত হয়, যেমন একটি কন্টেইনারের আকার পরিবর্তন হলে তার ভিতরের উপাদানগুলোও স্বয়ংক্রিয়ভাবে পরিবর্তিত হবে।
ধরা যাক, একটি Panel
রয়েছে যেটির লেআউট শুরুতে hbox
এবং পরে একটি বাটন ক্লিক করার পর সেটি vbox
লেআউটে পরিবর্তিত হবে।
Ext.create('Ext.panel.Panel', {
title: 'Dynamic Layout Example',
width: 400,
height: 300,
renderTo: Ext.getBody(),
layout: 'hbox', // Initially horizontal layout
items: [
{
xtype: 'textfield',
fieldLabel: 'First Name',
flex: 1
},
{
xtype: 'textfield',
fieldLabel: 'Last Name',
flex: 1
},
{
xtype: 'button',
text: 'Change Layout',
handler: function() {
// Dynamically change the layout to 'vbox'
var panel = this.up('panel');
panel.setLayout('vbox');
}
}
]
});
এখানে:
hbox
লেআউট ব্যবহার করা হয়েছে, যাতে টেক্সটফিল্ডগুলো একে অপরের পাশে থাকে।Change Layout
বাটন ক্লিক করার পর, setLayout('vbox')
মেথডের মাধ্যমে লেআউটটি vbox
(vertical) এ পরিবর্তিত হবে এবং উপাদানগুলো একটির নিচে একে রেখে প্রদর্শিত হবে।এটি Dynamic Layout ব্যবহারের একটি সাধারণ উদাহরণ যেখানে লেআউট রানটাইমে পরিবর্তিত হয়।
ExtJS বেশ কয়েকটি সাধারণ লেআউট সিস্টেম সরবরাহ করে যা কম্পোনেন্টগুলোর পজিশন এবং আকার নিয়ন্ত্রণ করতে সহায়ক:
hbox
/ vbox
Layout:
hbox
লেআউট উপাদানগুলোকে অনুভূমিকভাবে সাজায়।vbox
লেআউট উপাদানগুলোকে উল্লম্বভাবে সাজায়।উদাহরণ:
layout: 'hbox' // Horizontal layout
layout: 'vbox' // Vertical layout
border
Layout:
উদাহরণ:
layout: 'border',
items: [
{
region: 'north',
xtype: 'panel',
height: 50
},
{
region: 'center',
xtype: 'grid',
title: 'Main Grid'
}
]
fit
Layout:
উদাহরণ:
layout: 'fit',
items: [{
xtype: 'panel',
title: 'Fitted Panel'
}]
absolute
Layout:
উদাহরণ:
layout: 'absolute',
items: [{
xtype: 'button',
text: 'Click Me',
x: 100,
y: 50
}]
hbox
, vbox
, border
, fit
, absolute
, ইত্যাদি, যা কন্টেইনার এবং তার উপাদানগুলোর পজিশন এবং আকার নিয়ন্ত্রণ করতে ব্যবহৃত হয়।এগুলি nested containers এবং dynamic layouts ব্যবহার করে আরও ফ্লেক্সিবল, রেসপন্সিভ এবং ইন্টারেক্টিভ UI তৈরি করার জন্য খুবই গুরুত্বপূর্ণ উপাদান।
ExtJS একটি শক্তিশালী UI ফ্রেমওয়ার্ক, যা বিভিন্ন ধরনের layout এবং UI কম্পোনেন্ট সরবরাহ করে, যা মাল্টি-ভিউ অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। এর মধ্যে Card Layout এবং Tab Panels দুটি অত্যন্ত জনপ্রিয় উপাদান, যা একাধিক ভিউ বা প্যানেলকে একসাথে প্রদর্শন করতে ব্যবহৃত হয়। এই দুটি ফিচার ব্যবহার করে মাল্টি-ভিউ ডিজাইন তৈরি করা সহজ এবং কার্যকর।
Card Layout একটি লেআউট স্টাইল যা একসাথে একাধিক ভিউ বা কম্পোনেন্ট রাখে, তবে একবারে শুধুমাত্র একটি ভিউ দেখানো হয়। এটি এক ধরনের stacked layout, যেখানে একাধিক প্যানেল থাকে, কিন্তু শুধু একটি প্যানেল দৃশ্যমান থাকে এবং বাকি প্যানেলগুলো ব্যাকগ্রাউন্ডে থাকে।
Card Layout সাধারণত buttons, navigation bars, বা sliders এর সাথে ব্যবহার করা হয়, যাতে ব্যবহারকারী বিভিন্ন "cards" (প্যানেল বা ভিউ) এর মধ্যে স্যুইচ করতে পারে।
Card Layout উদাহরণ:
Ext.create('Ext.panel.Panel', {
renderTo: Ext.getBody(),
width: 400,
height: 300,
title: 'Card Layout Example',
layout: 'card', // layout type: card
items: [
{
xtype: 'panel',
title: 'Card 1',
html: 'This is Card 1'
},
{
xtype: 'panel',
title: 'Card 2',
html: 'This is Card 2'
},
{
xtype: 'panel',
title: 'Card 3',
html: 'This is Card 3'
}
],
bbar: [
{
text: 'Next Card',
handler: function() {
var layout = this.up('panel').getLayout();
layout.next(); // Switch to the next card
}
}
]
});
এখানে, Card Layout
ব্যবহার করে তিনটি প্যানেল (বা "card") তৈরি করা হয়েছে। নিচে একটি বাটন আছে, যা ব্যবহারকারীকে পরবর্তী "card"-এ নিয়ে যাবে। layout.next()
ব্যবহার করা হয়েছে যাতে পরবর্তী প্যানেলে স্যুইচ করা যায়।
Tab Panels একটি অত্যন্ত জনপ্রিয় উপাদান যা একাধিক ভিউ বা কম্পোনেন্টকে ট্যাব আকারে প্রদর্শন করে। প্রতিটি ট্যাব একটি নির্দিষ্ট ভিউ বা কন্টেন্টের সাথে সম্পর্কিত থাকে এবং ব্যবহারকারী যেকোনো ট্যাব ক্লিক করে সেই ভিউতে যেতে পারে। Tab Panels সাধারণত অ্যাপ্লিকেশন বা ড্যাশবোর্ডে বিভিন্ন বিভাগের ভিউ প্রদর্শন করতে ব্যবহৃত হয়।
Tab Panels উদাহরণ:
Ext.create('Ext.tab.Panel', {
renderTo: Ext.getBody(),
width: 400,
height: 300,
title: 'Tab Panel Example',
items: [
{
title: 'Tab 1',
html: 'This is the content of Tab 1'
},
{
title: 'Tab 2',
html: 'This is the content of Tab 2'
},
{
title: 'Tab 3',
html: 'This is the content of Tab 3'
}
]
});
এখানে, Tab Panel
ব্যবহার করে তিনটি ট্যাব তৈরি করা হয়েছে, যেখানে প্রতিটি ট্যাবের সাথে একটি ভিউ বা কন্টেন্ট রয়েছে। যখন ব্যবহারকারী একটি ট্যাবে ক্লিক করবে, তখন সেই ট্যাবের কন্টেন্ট দৃশ্যমান হবে।
ফিচার | Card Layout | Tab Panel |
---|---|---|
প্রধান বৈশিষ্ট্য | একে অপরের সাথে "stacked" কম্পোনেন্ট থাকে এবং এক সময়ে একটি কম্পোনেন্ট দেখা যায়। | ট্যাব ব্যবহারকারীদের ভিন্ন ভিন্ন কম্পোনেন্ট বা ভিউ দেখার সুযোগ দেয়। |
ইন্টারফেস | পরবর্তী বা পূর্ববর্তী "card" এ স্যুইচ করা হয়। | ট্যাব ক্লিক করলে নির্দিষ্ট ভিউ দেখা যায়। |
নেভিগেশন | সাধারণত বাটন বা ইভেন্টের মাধ্যমে পরবর্তী card-এ স্যুইচ করা হয়। | ট্যাব ক্লিক করে ভিউ স্যুইচ করা হয়। |
ব্যবহার | একাধিক ভিউ প্রদর্শন করা, যেখানে শুধুমাত্র একটি ভিউ একসাথে দেখা যায়। | অ্যাপ্লিকেশনের বিভিন্ন বিভাগ বা পৃষ্ঠাগুলির জন্য। |
এটি ব্যবহারকারীর জন্য একটি সুসংগঠিত এবং ইন্টারেক্টিভ UI তৈরি করতে সহায়ক।
Accordion Layout এবং Collapsible Panels হল ExtJS এর গুরুত্বপূর্ণ ইউজার ইন্টারফেস উপাদান, যা ইউজারের ইন্টারঅ্যাকশন এবং অ্যাপ্লিকেশনের ডাইনামিক অ্যাডজাস্টমেন্ট সক্ষম করে। এগুলি সাধারণত ব্যবহারকারীর জন্য স্পেস অপ্টিমাইজ করার জন্য এবং অ্যাপ্লিকেশনের বিভিন্ন সেকশনকে কার্যকরীভাবে প্রেজেন্ট করার জন্য ব্যবহৃত হয়।
এই গাইডে, আমরা Accordion Layout এবং Collapsible Panels কিভাবে তৈরি এবং ব্যবহার করতে হয়, তা দেখব।
Accordion Layout একটি লেআউট যা একাধিক প্যানেল বা সেকশনকে একটি সময়ে একটিতে প্রদর্শন করতে দেয়। যখন একটি প্যানেল খুলে যায়, তখন অন্য প্যানেলটি বন্ধ হয়ে যায়। এটি বিশেষভাবে ড্যাশবোর্ড বা কনটেন্ট এক্সপ্লোরেশন ইন্টারফেসে ব্যবহৃত হয়, যেখানে অনেক তথ্য একসাথে প্রদর্শন করতে হয়, তবে শুধুমাত্র একটি সেকশন একবারে দৃশ্যমান থাকে।
Ext.create('Ext.panel.Panel', {
title: 'Accordion Layout',
layout: {
type: 'accordion',
animate: true // এ্যানিমেটেড ট্রানজিশন সক্ষম
},
renderTo: Ext.getBody(),
items: [
{
title: 'Panel 1',
html: 'Content of Panel 1',
collapsed: false // প্রথম প্যানেল খোলা থাকবে
},
{
title: 'Panel 2',
html: 'Content of Panel 2'
},
{
title: 'Panel 3',
html: 'Content of Panel 3'
}
]
});
ব্যাখ্যা:
layout: { type: 'accordion' }
: এটি লেআউট টেমপ্লেট হিসেবে অ্যাকর্ডিয়ন নির্বাচন করে।collapsed: false
: প্রথম প্যানেলটি ডিফল্টভাবে খোলা থাকবে।animate: true
: প্যানেল স্যুইচিং এ অ্যানিমেশন যুক্ত করা হয়েছে।এখানে, তিনটি প্যানেল তৈরি করা হয়েছে, যেখানে একে একে একটি প্যানেল খোলা যাবে এবং বাকি প্যানেলগুলো বন্ধ থাকবে।
Collapsible Panels হল এমন প্যানেল যা ব্যবহারকারীর ইন্টারঅ্যাকশনের মাধ্যমে সংকুচিত বা বিস্তৃত (toggle) হতে পারে। এটি একটি প্যানেলের ভিউয়ের আকার পরিবর্তন করতে সাহায্য করে। প্যানেলটি টগল করার জন্য একটি বাটন বা ড্র্যাগ ব্যবহার করা যেতে পারে।
Ext.create('Ext.panel.Panel', {
title: 'Collapsible Panel',
width: 300,
height: 200,
collapsible: true, // প্যানেলটিকে টগল করা যাবে
collapsed: false, // ডিফল্টভাবে প্যানেলটি খোলা থাকবে
renderTo: Ext.getBody(),
html: 'This is a collapsible panel!'
});
ব্যাখ্যা:
collapsible: true
: এটি প্যানেলটিকে টগলেবল করে তোলে, যাতে ব্যবহারকারী প্যানেলটি খোলার এবং বন্ধ করার জন্য একটি বাটন দেখতে পান।collapsed: false
: ডিফল্টভাবে প্যানেলটি খোলা থাকবে। আপনি true
করলে প্যানেলটি শুরুতে বন্ধ থাকবে।আপনি যদি প্যানেলটিতে collapse এবং expand করার জন্য কাস্টম বাটন যুক্ত করতে চান, তাহলে tools
কনফিগারেশন ব্যবহার করতে পারেন, যা ব্যবহারকারীকে প্যানেলটি টগল করার জন্য একটি বাটন প্রদান করবে।
Ext.create('Ext.panel.Panel', {
title: 'Collapsible Panel with Toolbars',
width: 300,
height: 200,
collapsible: true,
tools: [{
type: 'collapse', // collapse টুল
handler: function() {
alert('Panel collapsed!');
}
}],
renderTo: Ext.getBody(),
html: 'This is a collapsible panel with a collapse tool button.'
});
এখানে, tools
কনফিগারেশন ব্যবহার করা হয়েছে যা একটি টুলবারে "collapse" বাটন প্রদর্শন করবে। যখন ব্যবহারকারী এটি ক্লিক করবে, প্যানেলটি সংকুচিত হবে এবং একটি এলার্ট প্রদর্শিত হবে।
আপনি একাধিক Collapsible Panels কে Accordion Layout এর মধ্যে সংযুক্ত করতে পারেন, যাতে একবারে একটি প্যানেল খোলা থাকে এবং অন্যান্য প্যানেলগুলি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়।
Ext.create('Ext.panel.Panel', {
title: 'Accordion Layout with Collapsible Panels',
layout: {
type: 'accordion',
animate: true
},
renderTo: Ext.getBody(),
items: [
{
title: 'Panel 1',
html: 'Content of Panel 1',
collapsible: true, // এটি collapsible প্যানেল হবে
collapsed: false
},
{
title: 'Panel 2',
html: 'Content of Panel 2',
collapsible: true, // এটি collapsible প্যানেল হবে
collapsed: true
},
{
title: 'Panel 3',
html: 'Content of Panel 3',
collapsible: true, // এটি collapsible প্যানেল হবে
collapsed: true
}
]
});
এখানে, একটি Accordion Layout তৈরি করা হয়েছে এবং এতে তিনটি Collapsible Panels সংযুক্ত করা হয়েছে। প্রতিটি প্যানেল একটি নির্দিষ্ট সময়ের জন্য খোলা বা বন্ধ থাকবে, এবং ব্যবহারকারী তাদের টগল করতে পারবে।
Responsive Design একটি গুরুত্বপূর্ণ দিক, যাতে আপনার অ্যাপ্লিকেশন মোবাইল এবং ডেস্কটপ উভয় প্ল্যাটফর্মেই ভালভাবে কাজ করে। ExtJS তে আপনি লেআউট এবং প্যানেলগুলোর responsive আচরণ কনফিগার করতে পারেন।
Ext.create('Ext.panel.Panel', {
title: 'Responsive Accordion Layout',
layout: {
type: 'accordion',
animate: true
},
width: '100%',
renderTo: Ext.getBody(),
items: [
{
title: 'Panel 1',
html: 'Content of Panel 1',
collapsible: true,
collapsed: false
},
{
title: 'Panel 2',
html: 'Content of Panel 2',
collapsible: true,
collapsed: true
}
]
});
এখানে, width: '100%'
সেট করা হয়েছে, যা গ্রিড বা প্যানেলকে responsively কাজ করতে সাহায্য করবে, বিশেষ করে মোবাইল ডিভাইসে।
এই উপাদানগুলো ব্যবহারের মাধ্যমে আপনি খুব সহজে একটি ডাইনামিক এবং ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে পারবেন যা বিভিন্ন স্ক্রীন সাইজে স্বাভাবিকভাবে কাজ করবে।
Read more